#ifndef ILOGGER_H
#define ILOGGER_H

class Logger;

#define LOG_FATAL(x) Logger::GetInstance()->fatal(x);
#define LOG_CRITICAL(x) Logger::GetInstance()->critical(x);
#define LOG_ERROR(x) Logger::GetInstance()->error(x);
#define LOG_WARN(x) Logger::GetInstance()->warning(x);
#define LOG_INFO(x) Logger::GetInstance()->info(x);
#define LOG_NOTICE(x) Logger::GetInstance()->notice(x);

class ILogger
{
public:
    ILogger()
    {
    }

    virtual ~ILogger()
    {
    }
    virtual void fatal(const char* msg)=0;
    virtual void critical(const char* msg)=0;
    virtual void error(const char* msg)=0;
    virtual void warning(const char* msg)=0;
    virtual void notice(const char* msg)=0;
    virtual void information(const char* msg)=0;

private:

};

#endif // ILOGGER_H
